#include <cstdio>

int task[15][15];
bool used[15];   // 列表示员工，而每个员工只能用一次
int ans = 20000;
int n;

void dfs(int x, int t) {   // 当前行 当前时间
    if(x == n) {
        if(t < ans) {
            ans = t;
        }
        return ;
    }

    for(int i = 0; i < n; i++) {
        if(!used[i]) {
            used[i] = true;
            dfs(x + 1, t + task[x][i]);
            used[i] = false;
        }
    }
}

int main()
{
    scanf("%d", &n);
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            scanf("%d", &task[i][j]);
        }
    }
    
    dfs(0, 0);
    printf("%d\n", ans);

    return 0;
}

